/*
|-----------------------------------------------------------------------------|
| Overall ANTLR Grammar File Structure                                        |
|-----------------------------------------------------------------------------|
| «grammarType» grammar name;
|   «optionsSpec»     = options { ... }
|   «tokensSpec»      = tokens { ... }
|   «attributeScopes» = «@action-scope-name::action-name» { ... }
|   «actions»
|   // rules
|   rule1 : ... ;
|   rule2 : ... ;
|   ...
|_____________________________________________________________________________|
|   «grammarType»         = ( lexer | parser | tree | <empty> )
|   «optionsSpec»         = options { ... }
|   «tokensSpec»          = tokens { ... }
|   «attributeScopes»     = 
|   «actions»             = @«action-scope-name»::«action-name» { ... }
|    «action-scope-name» = ( lexer | parser | tree | <empty> = parser )
|    «action-name»       = ( header | members | rulecatch | synpredgate )
|-----------------------------------------------------------------------------|
*/
lexer grammar GDLLexer;

  options {
    language = Java;
  }// options
  
  @lexer::header {
    package pl.p06.antlr3;
  }//header
  @lexer::members {
  }// members

//= Lexer Rules GDL ==========================================================|
  Graph           : 'graph';
    Node          : 'node';
      Title       : 'title';
      Label       : 'label';
      BorderStyle : 'borderstyle';
	      Solid     : 'solid';
	      Dashed    : 'dashed';
	      Dotted    : 'dotted';
    Edge          : 'edge';
      Source      : 'source';
      Target      : 'target';
      ArrowStyle  : 'arrowstyle';
	      Line      : 'line';
	      None      : 'none';
  LeftBracket : '{';
  RightBracket: '}';
  Colon       : ':';

  fragment NewLine: '\r'? '\n';
  WhiteSpace : (' '|'\t'|'\u000C'|NewLine) { $channel=HIDDEN; skip(); };
  StringLiteral: '"' (options {greedy=false;}: (~('\\'|'"')) )* '"';
  CommentLine
    : '//' ~('\n'|'\r')* NewLine  { $channel=HIDDEN; skip(); } 
    ;